#include <list>
#include <vector>
#include <stdio.h>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <fstream>
#include <iterator>
#include <iostream>
#include <cstdlib>

#ifndef MERGE_H_
#define MERGE_H_
#define VIAS 3
#define BUFFER_MERGE 100000
#define VIAS_ENTRADA_MERGE 5
#define NOMBRE_PARTICIONES_MERGE "particionMerge.part"


using namespace std;

/*
 * Esta clase utilitaria provee las primitivas necesarias para unficar una serie de particiones
 * localizadas en un directorio en un sólo archivo.
 */
class Merge {

public:

	/*
	 * Pre:
	 * Post:
	 */
	static void ejecutarMerge(list<string> &lista_particiones , const string & directorioDestino);

private:
	/*
	 * Pre:
	 * Post:
	 */
	static void ejecutarMergeParcial(list<string> &lista_particiones ,	const string & directorioDestino ,
									const unsigned int idAutorizado);

	Merge();

	virtual ~Merge();

};

#endif /* MERGE_H_ */
